Re-zeroing of a stepper motor without noise or movement

ABSTRACT

The present invention comprises a method and apparatus for driving and homing a stepper motor. In a preferred embodiment, 24 micro step pulse width modulated (PWM) voltage signals are used to drive the coils of the stepper motor. The phases between the driving signals are 90° out of phase. Thus, a sine/cosine methodology is used to drive the motor. Using micro-programmable pulse width modulation (PWM) levels involves the microprocessor reading stored voltage levels from a table stored in memory which corresponds to the amount of angular displacement desired by the motor. These voltage levels are then applied to the motor&#39;s coils. The microprocessor performs these operations by executing software instructions stored in memory. The software can be stored in memory located in the controller or in a separate logic block or logic chip. The magnitude of the bounce of a pointer attached to the output shaft of the motor and the magnitude of the noise generated as the pointer contacts a mechanical stop, are both directly related to the applied voltage and speed or frequency of the homing strategy. To reduce the bounce of the pointer and the generated noise to barely discernable levels, the applied voltage is reduced to between 15% and 30% of the normal driving voltage (approximately 1 volt for a 5 volt system). Additionally, the speed of homing is set to a value below the new start-stop frequency of the motor.

BACKGROUND OF THE INVENTION

[0001] The present invention relates to the use of a stepper motor as arelative position device. The name stepper motors comes from the factthat the motors move in discrete steps. This feature makes steppermotors ideally suited for many different types of positioningapplications. In the prior art, stepper motors employed as relativepositioning devices used a back emf feedback in an electronic closedloop system. However, this method requires the use of additionalhardware or special micros, either of which can be unacceptablyexpensive. Currently, there are three main categories of stepper motorsfound in the prior art, permanent magnet, variable reluctance andhybrid.

SUMMARY OF THE INVENTION

[0002] The invention comprises a method of driving a stepper motor,comprising the steps of driving the stepper motor using micro steps andhoming the stepper motor.

[0003] In another embodiment, the stepper motor uses a sine/cosinemethod to drive the stepper motor in micro steps.

[0004] In yet another embodiment, the step of homing comprises reducingan applied voltage and reducing a frequency of the motor below astart-stop frequency of the motor.

[0005] In still another embodiment, the invention comprises a steppermotor, comprising a plurality of windings and a controller comprising aplurality of outputs operably attached to the windings. The controllercomprises a processor, pulse width modulation drivers operably connectedto the processor, and memory comprising software operably connected tothe processor.

[0006] In still another embodiment, the memory comprises a table storedin the memory, whereby the table comprises driving signals which are 90°out of phase with each other corresponding to states also stored in thetable.

[0007] Further scope of applicability of the present invention willbecome apparent from the following detailed description, claims, anddrawings. However, it should be understood that the detailed descriptionand specific examples, while indicating preferred embodiments of theinvention, are given by way of illustration only, since various changesand modifications within the spirit and scope of the invention willbecome apparent to those skilled in the art.

BRIEF DESCRIPTION OF THE DRAWINGS

[0008] The present invention will become more fully understood from thedetailed description given here below, the appended claims, and theaccompanying drawings in which:

[0009]FIG. 1 is a circuit diagram illustrating the invention.

[0010]FIG. 2 illustrates an internal motor stop.

[0011]FIG. 3 illustrates the effects of driving the motor counterclockwise in step mode.

[0012]FIG. 4 illustrates the motor rotor cycling through states, whileagainst the stop.

[0013]FIG. 5 illustrates the movement of the pointer and the bounce ofthe pointer.

[0014]FIG. 6 illustrates a 24 micro step pulse width modulated voltagesignal used to drive a stepper motor.

[0015]FIG. 7 illustrates the possible motor states used to determine theindividual steps of the applied voltages, for 24 states.

[0016]FIG. 8 is a flowchart illustrating how the driving voltages foreach state 45 is calculated.

[0017]FIG. 9 is a flowchart illustrating a method of reducing bounce andnoise during homing.

[0018]FIG. 10 is a functional block diagram of the LM2576 “SimpleSwitcher.”

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

[0019] When used as relative position devices, stepper motors requirebeing reset or initialized in order to ensure accurate positioning whenthere is no closed loop feedback present. Initialization of a steppermotor can be done in one of two ways. The first way involves driving themotor back a number of steps that exceeds the anticipated distance themotor is above its mechanical reference. For example, a stepper motorcan be coupled to a gear wheel which rotates in the same direction asthe stepper motor. A pointer is attached to the gear wheel. The pointercan take the form of a rod. A fixed stop pin can be positioned in thevicinity of the gear wheel so as to make contact with the pointer whenthe pointer has rotated a certain amount and prevent the pointer fromrotating any further. Consequently, the gear wheel and the stepper motorare also prevented from rotating any further. The stop pin is used tolimit deflection of the motor in both the zero and the full position.

[0020] During an event where homing or zeroing may occur, such asignition key-off, or shutting a vehicle off, the interruption of thevoltage by the ignition lock is detected. Next, the motor's controlcircuitry sends a reset command to the motor's coils. This command cantake the form of a constant number of pulses, the number of which aregreat enough to reset the pointer to zero no matter what position thepointer is at. The pointer won't rotate past the stop pin.

[0021] The second method involves adding electronic feedback to thesystem to provide positional information about the motor.

[0022] The first method of positioning is usually preferred because thesecond method is expensive and requires more microprocessor bandwidththan the first method. However, driving the motor into a hard stop maygenerate two undesired effects, noise and/or bounce. The noise is causedby the fact that the stepping motor rotor remains driven after thepointer comes in contact with the stop and the pointer will continuallycome in contact with the mechanical stop and produce noise until all thereset pulses have been delivered.

[0023] The “jumping” or “bounce” is caused by the pointer bouncing offof the stop as the rotor re-synchronizes with the magnetic field in thecoils of the motor. The levels of both the noise and bounce can prove tobe unacceptable and, as a result, prevent the use of stepper motors asan indicator device without significant added costs incurred to reducethe noise and bounce.

[0024] By reducing applied voltages when executing homing (also known aszeroing or resetting), and by sending step pulses at a frequency (speed)below the start/stop frequency of the motor for the resulting power, itis possible to significantly reduce or eliminate both the noise andbounce typically associated with this operation.

[0025] Unlike an air gauge where applying specific discrete voltages toits coils controls the absolute position of the device, stepper motorpositioning is done by sending a number pulses corresponding to arelative displacement or deflection. Accurate positioning of a steppermotor requires implementation of a homing strategy that utilizes amechanical reference point at the end of the motor travel.

[0026] Mechanical Stop Selection

[0027] Using mechanical stop selection, homing or zeroing the steppermotor is performed by driving the motor in a descending direction untilthe movement of the motor is blocked by a mechanical stop orinterference. There are three types of mechanical interferences usedwith stepper motors.

[0028] 1) External/Dial: Pin located on the applique, towards the tip ofthe pointer.

[0029] 2) External/Hub: Pin located under the hub of the pointer, andrelief in the dial/applique.

[0030] 3) Internal/Motor: Pin located on the output gear of the steppermotor and a tab in the motor housing.

[0031] The present invention can use either 1) an external stop (seeFIG. 1), or 3) an internal motor stop (see FIG. 2).

[0032] Each form of stop offers different characteristics and requiresdifferent processes. Charac- External/ External/ Internal/ teristic DialHub Motor Visibility Visible Not Visible Not Visible Accuracy Veryaccurate Inaccurate Inaccurate (<+/−1°) (+/−6°) (dependent upon pointerplacement, +/−5°) Pointer Medium High High Movement Hub High MediumMedium Movement Noise High Medium None Homing Potential random PotentialPotential random repeat- error in some random error error in someability motors/gauges in some motors/gauges (without (10%) due tomotors/gauges (10%) due to calibration) mechanical stop (10%) due tomechanical stop and rotor mechanical and rotor orientation. stop androtor orientation. orientation.

[0033] Homing Feature Functional Descriptions

[0034] There are three homing or zeroing methods used with steppermotors.

[0035] These methods include:

[0036] 1) Open Loop: In this method, the drive motor descends towardsthe mechanical stop for a fixed number of steps at a controlled speedprofile. It stops at a fixed step position. This is known as the motorhome offset state.

[0037] 2) On Board Back EMF: In this method, the drive motor descendstowards the mechanical stop by full steps. It senses the back emfgenerated in the non-energized coil and stops when the back emf reachesa threshold voltage level, typically a few millivolts. It then willdetermine the step/position of the motor when the motor pointer hasreached this stop. This step/position will act as a zero reference pointwhen driving the motor in the positive direction. Using this method, onecan also use the back EMF generated when the magnet flips back torealign with the driving field as a zero reference point.

[0038] 3) Off Board Back EMF Calibration, Open Loop: This method uses atest circuit to sense back EMF that is generated when the motor isdriven toward a mechanical stop. This stop position (i.e., the number ofsteps taken to reach this stop position) is stored in the steppermotor's memory. The drive motor descends towards the mechanical stopmoving a fixed number of steps at a controlled speed until it stops at apreprogrammed step position.

[0039] Each homing method has different characteristics. Charac- OnBoard Back Off Board Back teristic Open Loop EMF EMF Additional None.Onboard product. Calibration test Hardware Circuit used to equipmentcircuit (circuit) measure and used to measure analyze back emf andanalyze back pulse. emf from coils. Software Normal drive Half step modeUses comparator (micro step) for homing. Uses to determine in reversecomparator for when rotor flips direction fast homing and in reversestopping at A/D port slope direction. the step position analysis fordefined in the slow homing. micro memory Determines when (default rotoris not position 0). turning. Requires direct control over motor.Tapping/ Present during None. Present during Noise¹ overdrive into Motorstops overdrive into stop after ini- after initial stop after initialtial contact contact with contact with stop, with stop, until stop.until fixed fixed number of number of steps steps are com- arecompleted. pleted. Depends Depends upon upon speed. speed. Higher Higherspeed = speed = lower lower noise. noise. Bounce Magnitude of Bounceoccurs Magnitude of against bounce depends for fast homing bouncedepends on stop² on speed of if motor/pointer speed of pointer pointer.(Higher is initially (Higher speeds = speeds = higher close to stop.higher bounce). bounce). Homing Potential random Dynamic, position Isrepeatable repeat- error in some is updated with within a few microability motors/gauges every homing and steps (+/−3). (accuracy) (10%)due to may change with High confidence. mechanical stopexpansion/contrac- and rotor tion of plastics. orientation withoutcalibration. Normal Potential random Accuracy unknown Accuracy unknownoperation error due to but can be much but can be much accuracy homingrepeat- better than error. better than error. ability.

[0040] Open Loop Homing Strategy, Detailed Explanation:

[0041] In a preferred embodiment, an open loop homing strategy is used.With the introduction of computers, and programmable controllers camethe ability to control motors using electronics. The motor will convertelectrical pulses from the controller into discrete angular steps of theoutput shaft. For each electrical pulse, the rotor turns a number ofdegrees which depends on its design. FIG. 3 demonstrates the effects ofdriving the motor counter clockwise in step mode.

[0042] A motor can also be driven using some level of micro step mode.Micro is used here to mean a fraction of a full step. It effectivelydivides adjacent step positions into a plurality of steps.

[0043] In the preferred embodiment, stepping the motor in micro steps isachieved by applying various potentials to the two motor coils in asine/cosine methodology as opposed to an on-off methodology. In asine/cosine methodology, the phases between the two driving signalsdriving the two motor coils are 90° out of phase. In a preferredembodiment (see FIG. 1), the motor 10 is directly driven by a controller20 which applies a voltage of approximately 5 volts to each stator coil.The motor comprises two coils, or windings or stators, 12 a and 12 b anda ten-pole rotor 14. The ten-pole rotor 14 is attached to a shaft 16which is connected to a gear assembly 17. By means of shaft 16 and gearassembly 17, the pointer 18 is rotated as the rotor 14 rotates. Themechanical stop 19 prevents the pointer 18 from moving any further.

[0044] At some point during the homing of the motor 10, the output gear17 of the stepper motor will stop turning either due to the attachedpointer's 18 contact with an external pointer stop 19, or the gear pin18 contact with the internal stop 19. When the output gear 17 is stoppedfrom turning any further clockwise, the rotor 14 gear/magnet will bestopped from turning as well.

[0045] Because this is not a closed loop system, there is no way ofdetermining when the output gear 17 has stopped turning. To insure thatthe pointer 18 has reached the pointer stop 19 and thus correct for anylost steps, the controller 20 will continue to cycle through the states45 a. States 45 a represent discrete angular steps or displacements ofthe motor 10.

[0046] If the pointer 18 or output gear 17 were to contact the stop 19when the rotor 14 was in the position shown in FIG. 3, step “b”, therotor 14 and thus the output gear/pointer 19 would “jump” back to theposition shown in step “a” when the driver reached step “e”. This isdemonstrated in FIG. 4. In FIGS. 3 and 4, the blank rectangles=no field.The N by a square represents the north field, while the S by a squarerepresents a south field. The number with the N or S is the sequentialoccurrence of the field (N1, S1, N2, S2 . . . ) as it goes from coil 1to coil 2. The dot is just a fixed reference on the rotor magnet.

[0047] As the motor driver or controller 20 continues to cycle throughthe states 45 a, the rotor 14 and output gear 17 and pointer 18 wouldcontinue to sweep into the pointer stop 19 and jump (or bounce) back tothe position shown in step “a”.

[0048]FIG. 2 illustrates an embodiment of the present invention in whichan internal motor stop 21 is used. The gear assembly 17 is comprised ofan intermediate gear 22 and an output gear 23. A gear pin 22 is mountedon the output gear 17 b. By means of the intermediate gear 22 and theoutput gear 23, the pin 24 is rotated as the rotor 14 rotates. Theinternal motor stop 21 prevents the pin 24 from moving any further.

[0049] In FIG. 5, each downward arrow represents the movement of thepointer 18 or output gear into the stop 19. In the case of the externalpointer stops, this is the source of the “tapping” noise. Each upwardarrow represents the “jumping” or “bounce” of the output gear 17 orpointer 18 off of the stop as the rotor re-synchronizes with themagnetic field in the stator coils 12 a, 12 b of the motor 10. The speedat which the motor 10 is driven during the homing process affects themagnitude of the noise generated and the amount of bounce.

[0050] Stepper Motor Homing Strategy

[0051] The implementation of a homing strategy for stepper motor 10applications is used to insure that the motor 10 is starting from a“known” reference. (However, nothing is actually known since there is noclosed loop feedback). Battery connect, ignition key-on and ignitionkey-off are events where homing may occur.

[0052]FIG. 6 depicts a 24 micro step (uStep) pulse width modulated (PWM)voltage signal used to drive a stepper motor 10. In a preferredembodiment, the controller 20 comprises two pulse width modulationdrivers 25 a, b to generate the driving signals (see FIG. 1). In FIG. 6,the voltages are stepping from −100% up to +100% of the peak voltage(typically 5 volts for a micro driven stepper motor). The phases betweenthe two driving signals, (PWM-C1) 30 and (PWM-C2) 40, are shown as being90° out of phase. Thus the control signal (PWM-C1) 30 driving coil 12 ais 90° out of phase with the control signal (PWM-C2) 40 driving coil 12b. However, the actual phase shift is dependent upon the motor design.

[0053] For bi-directional operation of the motor 10, it is necessary touse a bipolar drive. The positive pulses drive the motor 10 in aclockwise (CW) direction, while the negative pulses drive the motor 10in a counter-clockwise (CCW) direction. The duration of the pulse willaffect the total amount of energy delivered to the motor 10, therebyaffecting the number of degrees that it rotates.

[0054]FIG. 7 illustrates how the possible motor states used to calculatethe individual steps of the applied voltages are determined. There is atotal angular rotation of 360° which is divided into states 45 a. FIG. 8is a flowchart illustrating how the driving voltages for each state 45is calculated. In this example, there are 24 states 45 a or micro steps.Thus, each state 45 a corresponds to an angular step of 360/24=15°(100). Next, calculate the driving voltages 30, 40 for each state 45 a(110). For example, at motor state #4 (which corresponds to an angulardisplacement or deflection of 4*15°=60°), the voltage 30 driving coil 12a, PWM-C1, is 5* cos (60°)=2.5 Volts (113). The voltage 40 driving coil12 b, PWM-C2, is 5* sin (60°)=4.33 Volts (116). Thus, when thesevoltages 30, 40 are applied to coils 12 a and 12 b of the stepper motor10, the rotor 14 will deflect 60° from zero (120). The following table50 lists voltage driving values for coils 12 a and 12 b for each of the24 states or angular deflections 45 a. This table 50 can be stored inmemory 60. It can be stored in RAM memory or ROM memory, or in any ofthe different forms of memory accessible by a controller 20. Thecontroller 20 also comprises a processor, a microprocessor or any otherform of processing or control means 65 operably connected to the pulsewidth modulation drivers 25 a,b and the memory 60. The memory 60 can bepart of the microprocessor 65 or in a separate logic block or logicchip. The memory 60 an also be located on the same chip as thecontroller 20. TABLE 50 Motor 30 40 State PWM-C1 = 5 PWM-C2 = 5 45aDegrees cos(#) (Volts) sin (#) (Volts) 0 0 5 0 1 15 4.83 1.29 2 30 4.332.50 3 45 3.54 3.54 4 60 2.50 4.33 5 75 1.29 4.83 6 90 0 5 7 105 −1.294.83 8 120 −2.50 4.33 9 135 −3.54 3.54 10 150 −4.33 2.50 11 165 −4.831.29 12 180 −5 0 13 195 −4.83 −1.29 14 210 −4.33 −2.50 15 225 −3.54−3.54 16 240 −2.50 −4.33 17 255 −1.29 −4.83 18 270 0 −5 19 285 1.29−4.83 20 300 2.5 −4.33 21 315 3.54 −3.54 22 330 4.33 −2.50 23 345 4.83−1.29

[0055] Driving the stepper motor 10 with these voltage levels producesthe maximum motor torque for any given speed, which in one embodimentranges from 1-2 milli-Neuton meter (mNm) between 300°/sec and 100°/sec).As mentioned earlier, the magnitude of the bounce of the pointer 18attached to the output shaft 16 of the motor 10 and the magnitude of thenoise generated as the pointer 18 contacts the mechanical stop 19, areboth directly related to the applied voltage and speed or frequency ofthe homing strategy.

[0056]FIG. 9 is a flowchart illustrating a method of reducing bounce andnoise during homing. To reduce the bounce of the pointer 18 and thegenerated noise to barely discernable levels, the applied voltage isreduced to between 15% and 30% of the normal driving voltage(approximately 1 volt for a 5 volt system) 200 (see FIG. 9). Changingthe voltage (lowering it) reduces the output torque of the motorresulting in lower impact force against the stop. This results in lowernoise and bounce while continuing to drive the motor into the stop.

[0057] Additionally, the speed of homing is set to a value below the newstart-stop frequency of the motor 10. The start-stop frequency is thefrequency at which motor 10 movement will occur from a dead stop. Thestart-stop frequency of a motor depends on the motor torque and the sizeof the load that it is driving. Typical start-stop frequencies are inthe 200°/sec range. Using low frequency pulses whose frequency is belowthe start-stop frequency of the motor 10 ensures that the motor 10 stepsreliably and in synchronism with the pulses 210. After zeroing, when thepulse frequency is increased, namely to values above the start-stopfrequency, the drive torque decreases with the increase in thefrequency. This has the desired consequence that the drive torque isrelatively small when the stop is reached at the zero position of thepointer 18. Consequently, the bounce is reduced.

[0058] This method can be achieved in the following systems as follows:TABLE 80 Micro- Drive IC - Drive IC - Drive Programmable Fixed DiscreteFixed Voltage Method PWM Levels Voltages Level PWM Hardware Noadditional Switching circuit PWM signal to hardware to reduce thecontrol the required. magnitude of the percent duty available drivecycle of the voltage. driver. Software Independent PWM Control over theSelection of tables to drive switching of the normal or the motor withavailable drive reduced power normal or reduced voltage level. byapplying voltage levels either 100% duty under specified cycle or aconditions. reduced level for the low voltage strategy.

[0059] The duty cycle of the pulse is dependent on the desired outputvoltage as determined by FIG. 7. The duty cycle ranges from 0% or 0volts=5 Volts*PV* sin (φ) at φ=0° to 100% or 5 Volts=5 Volts*PV* sin (φ)at φ=90°, where PV is the percent of maximum voltage to be used (100%for normal operation and 15% to 30% under low voltage operation. φranges from 0° to 345° in 15° increments for a total of 24 possibleconditions/states.

[0060] In a preferred embodiment, the pulse width frequency is 16 KHz.The frequency of the driving signal refers to the rate of change of theduty cycle (the “step rate”). In a preferred embodiment, this is 40°/secto 100°/sec for the pointer speed. Thus, the step frequency range is40°/sec*12 usteps/1°=480 usteps/sec to 100°/sec*12 usteps/1°=1200usteps/sec.

[0061] Thus, from column one of table 80 it is seen that usingmicro-programmable pulse width modulation (PWM) levels involves theprocessor or microprocessor 65 reading stored voltage levels from atable such as table 50 stored in memory 60 which corresponds to theamount of angular displacement desired by the motor 10. These voltagelevels are then applied coils 12 a and 12 b respectively. The controller20 performs these operations by executing software instructions 70stored in memory 60. The software 70 can be stored in memory 60 locatedin the controller 20 or in a separate logic block or logic chip. SeeFIG. 1. In another preferred embodiment, the software can be stored aseither software or firmware in the microprocessor 65.

[0062] An example of a device which can be used as a pulse widthmodulation driver 25 a, 25 b is the National semiconductor LM2576“Simple Switcher.” This controller can accommodate date input voltagesfrom 4 to 40 Volts, control load currents up to 3A and provide outputvoltages from 1.23 to 37 Volts. FIG. 10 is a functional block diagram ofthe LM2576 “Simple Switcher.” The device also contains an internalswitching oscillator which runs at a fixed frequency of 52 kHz, giving aperiod T of about 20 usec. Remote turn-on of the regulator isfacilitated by a control pin.

[0063] A functional description of the LM2576 follows. It is assumedthat the divided down output voltage, provided to the sense input (pin4) of the chip, indicates that the output voltage is too high.

[0064] With a high sense input (>+1.23 Volts), the inverting input tothe op amp will be less than the non-inverting input 1.23 Vref.Consequently, the voltage output of the error amp U1 will be morepositive. With this positive input to the noninverting side of thecomparator U2, and the oscillator sawtooth waveform output by a 52 kHzoscillator U5, on the inverting input of U2, the comparator U2 outputwill spend more time in the high state.

[0065] With the input to the nor gate U3 more often high, the nor gateU3 output will spend more time low; which means the on time t_(on) of Q1will be reduced. Driver U4 is used to boost the output of U3. Becauset_(on) is reduced, less current will be provided to the load. As aresult, a reduced output voltage will occur at pin 2, Out.

[0066] The PWM driver 25 a,b also comprises an On/Off control U6 whichshould be grounded during normal operation, and an internal regulator U7connected to the collector of Q1. The other input of the Nor gate U3 isconnected to a reset circuit U8. A thermal shutdown circuit U9 and acurrent limit circuit U10 is connected to U4.

[0067] From the second column of Table 80, it is seen that using theDrive IC—Fixed Discrete Voltages methodology involves reducing thevoltage levels applied to the motor 10 (200). This is achieved by usinga switching circuit to reduce the magnitude of the available drivevoltages applied to the windings 12 a, 12 b of the stepper motor 10(203). The microprocessor 65 performs these operations by executingsoftware instructions 70 stored in memory 60.

[0068] From the third column of Table 80, it is seen that using theDrive IC—Fixed Voltage Level PWM methodology involves reducing thevoltage levels applied to the motor 10 (200). This is achieved bychanging the duty cycle of the pulses applied to the windings 12 a, 12 bof the stepper motor 10 (205). The microprocessor 65 performs theseoperations by executing software instructions 70 stored in memory 60.See FIG. 1.

[0069] The foregoing discussion discloses and describes an exemplaryembodiment of the present invention. One skilled in the art will readilyrecognize from such discussion, and from the accompanying drawings andclaims that various changes, modifications and variations can be madetherein without departing from the true spirit and fair scope of theinvention as defined by the following claims.

What is claimed is:
 1. A method of driving a stepper motor, comprisingthe steps of: driving the stepper motor using micro steps; and homingthe stepper motor.
 2. The method according to claim 1, wherein said stepof driving the motor in micro steps comprises applying voltage to atleast two motor coils using a sine/cosine method, whereby maximum motortorque is produced for any given speed.
 3. The method according to claim1, wherein said step of homing comprises the step of reducing an appliedvoltage.
 4. The method according to claim 1, wherein said step of homingcomprises the step of reducing a frequency of said motor below astart-stop frequency of the motor.
 5. The method according to claim 2,wherein said voltage comprises a pulse width modulated voltage signal.6. The method according to claim 3, further comprising reducing theapplied voltage between 15% and 30%.
 7. The method according to claim 3,further comprising reducing the applied voltage by changing a duty cycleof said applied voltage.
 8. The method according to claim 3, whereinsaid step of homing further comprises the step of reducing a frequencyof said motor below a start-stop frequency of the motor during homing ofthe motor.
 9. The method according to claim 4, wherein said step ofreducing frequency comprises sending step pulses at a frequency below astart-stop frequency of the motor, whereby noise and bounce is reducedduring homing.
 10. The method according to claim 5, wherein said step ofhoming comprises the step of reducing an applied voltage.
 11. The methodaccording to claim 5, wherein said step of homing comprises the step ofreducing a frequency below a start-stop frequency of the motor.
 12. Themethod according to claim 8, wherein said step of reducing frequencycomprises sending step pulses at a frequency below a start-stopfrequency of the motor, whereby noise and bounce is reduced duringhoming; and wherein said step of reducing said applied voltage compriseschanging a duty cycle of said applied voltage.
 13. The method accordingto claim 10, wherein said step of homing further comprises the step ofreducing a frequency below a start-stop frequency of the motor.
 14. Themethod according to claim 13, wherein said step of reducing frequencycomprises sending step pulses at a frequency below a start-stopfrequency of the motor, whereby noise and bounce is reduced duringhoming; and wherein said step of reducing said applied voltage compriseschanging a duty cycle of said applied voltage.
 15. A stepper motor,comprising: a plurality of windings; and a controller comprising aplurality of outputs operably attached to said windings, wherein saidcontroller comprises: a processor; at least one pulse width modulationdriver operably connected to said processor; and memory comprisingsoftware operably connected to said processor.
 16. The stepper motoraccording to claim 15, further comprising: a table stored in saidmemory, whereby said table comprises driving signals which are 90° outof phase with each other corresponding to states also stored in saidtable.
 17. The stepper motor according to claim 15, wherein saidsoftware further comprises the following instructions: homing saidstepper motor by reducing at least one of said voltages and reducing afrequency of said motor below a start-stop frequency of said motor. 18.The stepper motor according to claim 16, wherein said software comprisesthe following instructions: reading a state from said table; driving afirst of said plurality of coils with a voltage proportional to a cosineof said state; and driving a second of said plurality of coils with avoltage proportional to a sine of said state.
 19. The stepper motoraccording to claim 18, wherein said software further comprises thefollowing instructions: homing said stepper motor by reducing at leastone of said voltages; and reducing a frequency of said motor below astart-stop frequency of said motor, whereby noise and bounce is reducedduring homing.
 20. The stepper motor according to claim 17, wherein saidsoftware further comprises the following instructions: homing saidstepper motor by reducing at least one of said voltages by changing aduty cycle of said at least one of said voltages; and reducing afrequency of said motor below a start-stop frequency of said motor bysending pulses at a frequency below a start-stop frequency of saidmotor.